package com.yuw.hw20190215;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class HomeWork20190215 {
    public static void main(String[] args) {
        test04();
    }

    /**
     * 第四题：
     * 巴黎时间比北京时间晚7个小时，纽约时间比北京时间晚12个小时，
     * 试编写一程序，根据输入的北京时间输出相应的巴黎和纽约时间。[选做题]
     */
    private static void test04(){
        // 使用Scanner输入一个日期字符串：
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个北京时间的字符串（格式如：15:30:22）：");
        String strBJTime = sc.nextLine();
        // 将时间字符串转换为datetime类型
        Date bjDate = convertString2Date(strBJTime,"HH:mm:ss");
        // 将其转化为巴黎和纽约时间
        Calendar bjCalendar = Calendar.getInstance();
        bjCalendar.setTime(bjDate);
        // 获取日期的各个参数信息
        // 转换为巴黎时间
        bjCalendar.add(Calendar.HOUR,7);
        // 输出巴黎时间
        System.out.println(convertDate2String(bjCalendar.getTime(),"HH:mm:ss"));

        // 将其转化为巴黎和纽约时间
        Calendar nyCalendar = Calendar.getInstance();
        nyCalendar.setTime(bjDate);
        // 获取日期的各个参数信息
        // 转换为巴黎时间
        nyCalendar.set(Calendar.HOUR,nyCalendar.get(Calendar.HOUR)+12);
        // 输出巴黎时间
        System.out.println(convertDate2String(nyCalendar.getTime(),"HH:mm:ss"));

    }


    /**
     * 将字符串类型的日期转换为日期对象
     *
     * @param strDate 字符串类型的日期
     * @param pattern 字符串的格式
     * @return 日期对象
     */
    private static Date convertString2Date(String strDate, String pattern) {
        // 返回值:默认值为null
        Date date = null;
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        try {
            date = sdf.parse(strDate);
        } catch (Exception e) {
            // 如果发生异常，此处进行异常的日志记录
            System.out.println("日期转换发生了问题");
        }
        return date;

    }

    /**
     * 将日期对象转换为指定格式的日期字符串
     *
     * @param date 被转换的日期对象
     * @param pattern 字符串的转换格式
     * @return 指定格式的日期字符串
     */
    private static String convertDate2String(Date date, String pattern) {
        // 返回值:默认值为""
        String strDate = "";
        if (pattern == null) {
            // 给定一个默认的转换格式
            pattern = "yyyy-MM-dd HH:mm:ss";
        }

        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        // 进行转换操作
        strDate = sdf.format(date);
        return strDate;
    }

}
